package com.texaco.chapasFutbol.entidades;

import org.andengine.util.debug.Debug;

/**
 * Clase que implementa los estado del juego.
 * @author texaco
 *
 */
public class StateGame {
	public static final String ESTADO_JUEGO_PARADO = "ESTADO_JUEGO_PARADO";
	public static final String ESTADO_JUEGO_ACTIVO = "ESTADO_JUEGO_ACTIVO";
	public static final String ESTADO_JUEGO_MOVIMIENTO = "ESTADO_JUEGO_MOVIMIENTO";
	public static final String ESTADO_JUEGO_FIN = "ESTADO_JUEGO_FIN";

	private String estado = ESTADO_JUEGO_ACTIVO;

	/**
	 * Método que para el juego, generalmente tras un gol(se podría poner como
	 * pausa). Requiere que se reanude posteriormente.
	 */
	public void pararJuego() {
		Debug.d("Se para el juego.");
		estado = ESTADO_JUEGO_PARADO;
	}
	
	/**
	 * Indica si el juego está parado. El juego se puede parar actualmente por:
	 * - Se ha introducido un gol.
	 * 
	 * @return
	 */
	public boolean isJuegoParado() {
		return estado.equals(ESTADO_JUEGO_PARADO);
	}
	
	/**
	 * Indica si el juego está activo. Activo actulamente comprende los estados
	 * activo y en movimiento (cuando alguna chapa sigue en movimiento) Estando
	 * el juego activo, puede pasar a estado PARADO, en el caso de que se haya
	 * marcado un gol.
	 * 
	 * @return
	 */
	public boolean isJuegoActivo() {
		return estado.equals(ESTADO_JUEGO_ACTIVO)
				|| estado.equals(ESTADO_JUEGO_MOVIMIENTO);
	}
	
	/**
	 * Indica si el juego se ha finalizado.
	 * @return
	 */
	public boolean isJuegoFinalizado() {
		return estado.equals(ESTADO_JUEGO_FIN);
	}
	
	/**
	 * Vuelve el estado a su posición original.
	 */
	public void reiniciarEstado(){
		estado = ESTADO_JUEGO_ACTIVO;
	}

	public void finalizaJuego() {
		estado = ESTADO_JUEGO_FIN;
	}

	/**
	 * Establece el estado del juego a en movimiento
	 * Indica que hay una chapa moviendose. 
	 * @return
	 */
	public void ponerEnMovimiento() {
		estado = ESTADO_JUEGO_MOVIMIENTO;
	}

	public boolean isEnMovimiento() {
		return estado.equals(ESTADO_JUEGO_MOVIMIENTO);
	}

	public void activarJuego() {
		estado = ESTADO_JUEGO_ACTIVO;
	}
}
